#ifndef VECTOR_H_
#define VECTOR_H_

#include "../Containers/NumList.h"
#include "../Utils/BasicTypes.h"
#include "../SparceMatrix/sparse_matrix.h"

elem SumOfVector(const elem* vector, unsigned size);
elem* MultVectorByScalar (const elem* vector, elem scalar, elem* ret, unsigned size);
elem* MultVectorByMatrix(const elem* matrix, const elem* vector, unsigned size);
elem* CreateMultVectorByScalar (const elem* vector, elem scalar, unsigned size);
elem* MultedVector (const elem* vector1, const elem* vector2, elem* ret, unsigned size);
elem* CreateMultedVector (const elem* vector1, const elem* vector2, unsigned size);
elem ScalarProduct (const elem* vector1, const elem* vector2, unsigned size);
elem* PartialVector (const elem * vector, const NumList* numList);
elem* SumVectors (const elem* vector1, const elem* vector2, elem* ret, unsigned size, bool isSum);
elem NormVector (const elem* vector, unsigned size);
bool BrutalRoundVector (elem* vector, unsigned size);
void InitVectorWithBool (bool* vector, bool init, unsigned size);
void InitVectorWithElem (elem* vector, elem init, unsigned size);
unsigned FindMaxIndex(const elem* vector, unsigned size);
unsigned FindMaxIndexUnmoved(const elem* vector, const bool* moved, unsigned size);

#endif /*VECTOR_H_*/
